package base.list;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

public class ArrayStudy {
	public static void main(String[]args){
		ArrayList heros = new ArrayList();
		Hero a= new Hero();
		Item b= new Item();
		heros.add(a);
		heros.add(b);
		
		
		LinkedList<Hero> list =new LinkedList<>();//除了实现了List接口外，LinkedList还实现了双向链表结构Deque，可以很方便的在头尾插入删除数据
		 //LinkedList是一个双向链表结构的list
        LinkedList<Hero> ll =new LinkedList<Hero>();
         
        //所以可以很方便的在头部和尾部插入数据
        //在最后插入新的英雄
        ll.addLast(new Hero("hero1"));
        ll.addLast(new Hero("hero2"));
        ll.addLast(new Hero("hero3"));
        System.out.println(ll);
         
        //在最前面插入新的英雄
        ll.addFirst(new Hero("heroX"));
        System.out.println(ll);
         
        //查看最前面的英雄
        System.out.println(ll.getFirst());
        //查看最后面的英雄
        System.out.println(ll.getLast());
         
        //查看不会导致英雄被删除
        System.out.println(ll);
        //取出最前面的英雄
        System.out.println(ll.removeFirst());
         
        //取出最后面的英雄
        System.out.println(ll.removeLast());
         
        //取出会导致英雄被删除
        System.out.println(ll);
        //和ArrayList一样，LinkedList也实现了List接口
        List ll0 =new LinkedList<Hero>();
          
        //所不同的是LinkedList还实现了Deque，进而又实现了Queue这个接口
        //Queue代表FIFO 先进先出的队列
        Queue<Hero> q= new LinkedList<Hero>();
        //加在队列的最后面
        q.offer(new Hero("123"));
        q.offer(new Hero("1"));
        q.offer(new Hero("2"));
        q.offer(new Hero("3"));
        System.out.println(q);
        a= q.poll(); //取出第一个Hero，FIFO 先进先出
        a = q.peek();//把第一个拿出来看一看，但是不取出来

	}


}
